// 引入模块
const fs = require('fs')
// 路径
const path = require('path')
// util 工具模块
// const util = require('util')
// 优点：node自带把方法变成promise
// 缺点：返回值必须是 err和结果
// const readFile = util.promisify(fs.readFile)

// 获取当前脚本执行的目录路径
// console.log(__dirname)

// const filepath = path.join(__dirname, 'db', 'user.txt')

// 读取文件 异步操作，回调
/* fs.readFile(filepath, function (err, data) {
  // err 判断本次读文件是否成功，成功返回null
  console.log(err)
  console.log(data.toString())
}) */

// 把数据转为字符串
/* fs.readFile(filepath,'utf8', function (err, data) {
  console.log(err)
  console.log(data)
}) */

/* fs.readFile(filepath,'utf8', function (err, data) {
  if(err){
    console.log('读取文件失败');
  }else{
    console.log(data);
  }

}) */

/* fs.readFile(filepath,'utf8', (err, data) =>{
  if(err){
    console.log('读取文件失败');
  }else{
    console.log(data);
  }

}) */

// promise
/* readFile(filepath).then(data=>{
  console.log(data.toString());
},err=>console.log(err)) */

/* function readFile(filepath) {
  return new Promise((resolve, reject) => {
    fs.readFile(filepath, 'utf8', (err, data) => {
      if (err) {
        reject(err)
      } else {
        resolve(data)
      }
    })
  })
}
 */
/* readFile(filepath).then(data=>{
  console.log(data);
},err=>console.log(err)) */
/* 
// 了解一下，后面在项目中用时，再和你们说
(async ()=>{
  let data = await readFile(filepath)
  console.log(data);
})() */

// 同步读取文件 不推荐此写法
/* const filepath = path.join(__dirname, 'db', 'user.txt')
const data = fs.readFileSync(filepath,'utf8')
console.log(data) */

/* const filepath = path.join(__dirname, 'db', 'index.html')

const html = '<h3>你好世界</h3>'

// chmod -R 777 db
fs.writeFile(filepath, html, err => console.log(err)) */
// fs.writeFileSync(filepath,html)


const filepath = path.join(__dirname, 'db', 'index.html')
// 判断一个文件是否存在 返回 true/false  
// 服务器中false 文件是否存在 如果服务器中文件是存在但还是返回false 因为权限问题
console.log(fs.existsSync(filepath)) // true

// 读取文件的属性信息
/* fs.stat(filepath,(err,stats)=>{
  console.log(err)
  // 文件大小 字节
  console.log(stats.size);
  // 是否是目录
  console.log(stats.isDirectory());
  // 是否是文件
  console.log(stats.isFile());
  // 文件的修改时间
  console.log(stats.mtime);
})
 */

// 异步 setTimeout 延时1秒钟
fs.unlink(filepath, err => {
  // 如果删除成功返回null 取反 !null=>true !true=>false
  if (!err) { // 删除成功
    console.log(fs.existsSync(filepath)) // false
  }
})

// console.log(fs.existsSync(filepath)) // true

